﻿namespace MugenInjection.Interface
{
    /// <summary>
    ///     Represents a interface for module which can load in <see cref="IInjector" />.
    /// </summary>
    public interface IInjectorModule
    {
        /// <summary>
        ///     Gets the module name.
        /// </summary>
        string Name { get; }

        /// <summary>
        ///     Loads bindings and components in current module.
        /// </summary>
        /// <param name="injector">
        ///     The specified <see cref="IInjector" />.
        /// </param>
        void Load(IInjector injector);

        /// <summary>
        ///     Unloads bindings and components in current module.
        /// </summary>
        void Unload(IInjector injector);
    }
}